#include <bits/stdc++.h>
using namespace std;

typedef long long LL;

const int N = 200010;

int n, m, k;
int a[N];
LL b[N], s[N];

int main()
{
    scanf("%d%d", &n, &m);
    for (int i = 1; i <= n; i++)
        scanf("%d", &a[i]);
    for (int i = 1; i < n; i++)
        b[i] = a[i + 1] - a[i];
    
    sort(b + 1, b + n);
    
    for (int i = 1; i <= n; i++)
        s[i] = b[i] + s[i - 1];
    while (m--)
    {
        LL x, y;
        scanf("%lld %lld", &y, &x);
        int l = 1, r = n - 1;
        while (l < r)
        {
            int mid = (l + r) / 2;
            if (b[mid] > y)
                r = mid;
            else
                l = mid + 1;
        }
        if (b[l] < y)
            l++;
        LL res = s[n - 1] - s[l - 1] - y * (n - l);
        // cout<<res<<endl;
        if (res >= x)
            puts("YES");
        else
            puts("NO");
    }
    return 0;
}

/*

题目描述
小A在玩一个游戏，游戏的目标是打败BOSS。

BOSS共有m点生命值，小A的武器是一个电磁炮，每次开启需要蓄力x秒，当电磁炮蓄力完毕后，它会持续攻击，
每秒扣除BOSS的1点生命值。但是因为武器自身有一些问题，在一些特定的时间，它会强制关闭。
如果当前在攻击状态，那么攻击无效，转成蓄力；如果当前在蓄力时间，那么结束当前蓄力，蓄力重新计时。
最后一次强制关闭后，电磁炮就无法再启动了。

小A不停地重复玩这个游戏，但每局中电磁炮的强制关闭时间是相同的，但是蓄力需要的时间以及BOSS的生命值并不相同，
请你帮忙判断每局中小A是否可以打败BOSS，小A是否可以击败BOSS，则输出”YES”，反之输出“NO”。每局之间相互独立。


输入格式
第一行包含两个正整数n,q,表示武器强制关闭的次数以及局数，

第二行n个正整数t1,t2,...,tn,表示n个强制关闭的时间点。

接下来q行表示q局游戏，每行两个正整数ki,pi,分别表示第i个电磁炮的蓄力时间和BOSS的生命值。
输出格式
共q行，每一行输出YES或者NO。

数据范围
1 ≤ n,q ≤ 100000,

1 ≤ ti ≤ 1000000000,t1为0，且ti按照升序给出，切互不相同

1 ≤ ki,pi,≤ 100000


样例1
输入数据 1
5 4
0 1 4 8 9
3 1
3 2
2 3
1 20
输出数据 1
YES
NO
YES
NO

*/